﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using Model;
using HRP.Utilidades;

namespace HRP.Private.Empresa
{
    public partial class EditEmpresa : System.Web.UI.Page
    {
        public string logo { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                if (Session["EmpresaActual"] != null)
                {
                    Session["VistaEmpresaId"] = ((hrp_empresas)Session["EmpresaActual"]).id;
                }
                carregarPaises();
                carregarActividades();
            }
            Page.PreRender += new EventHandler(Page_PreRender);
        }
        void carregarActividades()
        {
            paisesDL.DataSource = Utilidade_BLL.Instance.ObterListaPaises();
            paisesDL.DataBind();
        }

        void carregarPaises()
        {
            ramoDL.DataSource = Utilidade_BLL.Instance.obterRamosActividades();
            ramoDL.DataBind();
        }

        void Page_PreRender(object sender, EventArgs e)
        {
            carregarInfo();
        }

        void carregarInfo()
        {
            if (Session["EmpresaActual"] != null)
            {
                hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
                Session["VistaEmpresaId"] = empresa.id;
                nomeTB.Text = empresa.nome;
                companyNameLB.Text = empresa.nome;
                moradaTB.Text = empresa.morada;
                codigoPostalTB.Text = empresa.codigo_postal;
                nifTB.Text = empresa.nif;
                ssTB.Text = empresa.ss;
                emailTB.Text = empresa.email;
                telefoneTB.Text = empresa.telefone;
                telemovelTB.Text = empresa.telemovel;
                faxTB.Text = empresa.fax;
                dataLB.Text = empresa.data_registo.HasValue ? empresa.data_registo.Value.ToString(DefinicoesSite.DataFormatoHora) : string.Empty;
                websiteTB.Text = empresa.website;
                sobreTB.Text = empresa.comentario;
                logo = empresa.logo;

                var user = Cliente_BLL.Instance.ObterUserporID(Convert.ToInt32(empresa.user_id));
                var empresaLog = Empresa_BLL.Instance.ObterPrimeiroLogEmpresa(empresa.id);
                if (user != null)
                {
                    dataModificacaoLB.Text = empresa.user_timestamp.ToString(DefinicoesSite.DataFormatoHora);
                    modificadorLB.Text = user.username ;
                    if (empresaLog != null)
                        user = user.id.ToString() != empresaLog.user_id ? Cliente_BLL.Instance.ObterUserporID(Convert.ToInt32(empresaLog.user_id)) : user;

                    criadorLB.Text = user.username ;
                }

                paisesDL.SelectedIndex = paisesDL.Items.IndexOf(paisesDL.Items.FindByValue(empresa.pais.ToString()));
                if (empresa.ramo_actividade.HasValue)
                    ramoDL.SelectedIndex = ramoDL.Items.IndexOf(ramoDL.Items.FindByValue(empresa.ramo_actividade.Value.ToString()));
            }
            else
            {
                Response.Redirect("~/private/logout.aspx");
            }
        }

        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            if (Session["EmpresaActual"] != null && Session["idclient"] != null && Session["userid"] != null)
            {
                hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
                string userId = Session["userid"].ToString();
                Empresa_BLL.Instance.updateDadosEmpresa(empresa.id, moradaTB.Text,
                    codigoPostalTB.Text, nifTB.Text, ssTB.Text, emailTB.Text, telefoneTB.Text, telemovelTB.Text,
                    faxTB.Text, websiteTB.Text, sobreTB.Text, userId, Request.UserHostAddress,
                    nomeTB.Text, Convert.ToInt32(paisesDL.SelectedValue), Convert.ToInt32(ramoDL.SelectedValue));
                Session["EmpresaActual"] = Empresa_BLL.Instance.ObterEmpresa((int)Session["idclient"], empresa.id);
            }

            hrp_empresas empresaActual = null;
            if (Session["EmpresaActual"] != null)
            {
                empresaActual = (hrp_empresas)Session["EmpresaActual"];
            }


        }

        protected void LinkButton2_Click(object sender, EventArgs e)
        {
            if (Session["EmpresaActual"] != null && Session["idclient"] != null && Session["userid"] != null)
            {
                if (FileUpload1.HasFile && FileUpload1.PostedFile.ContentType.StartsWith("image"))
                {
                    hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];

                    string path = Server.MapPath("/images/" + empresa.id + "/") + FileUpload1.PostedFile.FileName;

                    string path1 = Server.MapPath("/images/" + empresa.id + "/");
                    if (!System.IO.Directory.Exists(path1))
                    {
                        System.IO.Directory.CreateDirectory(path1);
                    }
                    FileUpload1.PostedFile.SaveAs(path);
                    //gravar na bd caminho de imagem
                    int index = path.LastIndexOf("images");
                    string pathrec = path.Substring(index - 1, (path.Count() - index + 1));
                    string userId = Session["userid"].ToString();
                    Empresa_BLL.Instance.updateLogoEmpresa(empresa.id, pathrec, userId, Request.UserHostAddress);
                    Session["EmpresaActual"] = Empresa_BLL.Instance.ObterEmpresa((int)Session["idclient"], empresa.id);
                }
            }
        }
    }
}